package com.zjj.lbw.common.lock;

/**
 * @author zhanglei.zjj
 * @description 分布式锁公共抽象类
 * @date 2023/6/22 14:58
 */
public abstract class AbstractLock implements Lock {
    @Override
    public void lock() {
        //尝试获取锁
        if (tryLock()) {
            System.out.println("---------获取锁---------");
        } else {
            //等待锁 阻塞
            waitLock();
            //重试
            lock();
        }
    }

    /**
     * 尝试获取锁
     * @return
     */
    public abstract boolean tryLock() ;

    /**
     * 等待锁
     */
    public abstract void waitLock() ;
}
